A database is a collection of logically related data arranged in a predetermined format, such as in tables that contain rows and columns. To access the content of a table in the database, queries according to a standard database query language (such as the Structured Query Language or SQL) are submitted to the database. A query can be issued to insert new entries into a table of a database (such as to insert a row into the table), modify the content of the table, or to delete entries from the table. Examples of SQL statements include INSERT, SELECT, UPDATE, and DELETE.
SQL queries can also specify joins of two or more tables in a database. A join operation combines records (e.g., rows) from the two or more tables of the database. One type of join is an inner join. The result of the inner join includes records from the tables being joined that satisfy the join predicate of the SQL query.
A different type of join is an outer join, which contains the result of the inner join as well as non-matching records of one or more tables. There are three types of outer joins: left outer join, right outer join, and full outer join. In one example, assume that a left outer join of tables A and B is being performed. The left outer join will produce a result that contains all records of the left table (A), even if the join condition of the SQL query does not find any matching record in the right table (B). In contrast, a right outer join would produce a result that has all records of the right table (B), even if the join condition does not find any matching record in the left table (A). A full outer join combines the results of both left and right outer joins.
The performance of outer joins in a parallel database management system having multiple processing units can suffer, since the performance of outer joins can involve relatively large amounts of data communications among the processing units over a communications medium, which can present a bottleneck.